package com.nimbus.core.model.proxy;

import com.easy.query.core.proxy.AbstractProxyEntity;
import com.easy.query.core.proxy.SQLSelectAsExpression;
import com.easy.query.core.proxy.fetcher.AbstractFetcher;
import com.nimbus.core.model.ConfigItem;
import com.easy.query.core.proxy.columns.types.SQLLongTypeColumn;
import com.easy.query.core.proxy.columns.types.SQLStringTypeColumn;
import com.easy.query.core.proxy.columns.types.SQLIntegerTypeColumn;
import com.easy.query.core.proxy.columns.types.SQLUtilDateTypeColumn;
import com.easy.query.core.proxy.columns.types.SQLBooleanTypeColumn;

/**
 * this file automatically generated by easy-query, don't modify it
 * 当前文件是easy-query自动生成的请不要随意修改
 * 如果出现属性冲突请使用@ProxyProperty进行重命名
 *
 * @author easy-query
 */
public class ConfigItemProxy extends AbstractProxyEntity<ConfigItemProxy, ConfigItem> {

    private static final Class<ConfigItem> entityClass = ConfigItem.class;

    public static final ConfigItemProxy TABLE = createTable().createEmpty();

    public static ConfigItemProxy createTable() {
        return new ConfigItemProxy();
    }

    public ConfigItemProxy() {
    }

    /**
     * {@link ConfigItem#getId}
     */
    public SQLLongTypeColumn<ConfigItemProxy> id() {
        return getLongTypeColumn("id");
    }

    /**
     * {@link ConfigItem#getKey}
     */
    public SQLStringTypeColumn<ConfigItemProxy> key() {
        return getStringTypeColumn("key");
    }

    /**
     * 配置键
     * {@link ConfigItem#getValue}
     */
    public SQLStringTypeColumn<ConfigItemProxy> value() {
        return getStringTypeColumn("value");
    }

    /**
     * 配置值
     * {@link ConfigItem#getDescription}
     */
    public SQLStringTypeColumn<ConfigItemProxy> description() {
        return getStringTypeColumn("description");
    }

    /**
     * 配置描述
     * {@link ConfigItem#getEnvironment}
     */
    public SQLStringTypeColumn<ConfigItemProxy> environment() {
        return getStringTypeColumn("environment");
    }

    /**
     * 环境：devtestprod
     * {@link ConfigItem#getProject}
     */
    public SQLStringTypeColumn<ConfigItemProxy> project() {
        return getStringTypeColumn("project");
    }

    /**
     * 所属项目
     * {@link ConfigItem#getVersion}
     */
    public SQLIntegerTypeColumn<ConfigItemProxy> version() {
        return getIntegerTypeColumn("version");
    }

    /**
     * 版本号
     * {@link ConfigItem#getCreatedBy}
     */
    public SQLStringTypeColumn<ConfigItemProxy> createdBy() {
        return getStringTypeColumn("createdBy");
    }

    /**
     * 创建人
     * {@link ConfigItem#getCreatedAt}
     */
    public SQLUtilDateTypeColumn<ConfigItemProxy> createdAt() {
        return getUtilDateTypeColumn("createdAt");
    }

    /**
     * 创建时间
     * {@link ConfigItem#getUpdatedAt}
     */
    public SQLUtilDateTypeColumn<ConfigItemProxy> updatedAt() {
        return getUtilDateTypeColumn("updatedAt");
    }

    /**
     * 更新时间
     * {@link ConfigItem#getIsEncrypted}
     */
    public SQLBooleanTypeColumn<ConfigItemProxy> isEncrypted() {
        return getBooleanTypeColumn("isEncrypted");
    }


    @Override
    public Class<ConfigItem> getEntityClass() {
        return entityClass;
    }


    /**
     * 数据库列的简单获取
     *
     * @return
     */
    public ConfigItemProxyFetcher FETCHER = new ConfigItemProxyFetcher(this, null, SQLSelectAsExpression.empty);


    public static class ConfigItemProxyFetcher extends AbstractFetcher<ConfigItemProxy, ConfigItem, ConfigItemProxyFetcher> {

        public ConfigItemProxyFetcher(ConfigItemProxy proxy, ConfigItemProxyFetcher prev, SQLSelectAsExpression sqlSelectAsExpression) {
            super(proxy, prev, sqlSelectAsExpression);
        }


        /**
         * {@link ConfigItem#getId}
         */
        public ConfigItemProxyFetcher id() {
            return add(getProxy().id());
        }

        /**
         * {@link ConfigItem#getKey}
         */
        public ConfigItemProxyFetcher key() {
            return add(getProxy().key());
        }

        /**
         * 配置键
         * {@link ConfigItem#getValue}
         */
        public ConfigItemProxyFetcher value() {
            return add(getProxy().value());
        }

        /**
         * 配置值
         * {@link ConfigItem#getDescription}
         */
        public ConfigItemProxyFetcher description() {
            return add(getProxy().description());
        }

        /**
         * 配置描述
         * {@link ConfigItem#getEnvironment}
         */
        public ConfigItemProxyFetcher environment() {
            return add(getProxy().environment());
        }

        /**
         * 环境：devtestprod
         * {@link ConfigItem#getProject}
         */
        public ConfigItemProxyFetcher project() {
            return add(getProxy().project());
        }

        /**
         * 所属项目
         * {@link ConfigItem#getVersion}
         */
        public ConfigItemProxyFetcher version() {
            return add(getProxy().version());
        }

        /**
         * 版本号
         * {@link ConfigItem#getCreatedBy}
         */
        public ConfigItemProxyFetcher createdBy() {
            return add(getProxy().createdBy());
        }

        /**
         * 创建人
         * {@link ConfigItem#getCreatedAt}
         */
        public ConfigItemProxyFetcher createdAt() {
            return add(getProxy().createdAt());
        }

        /**
         * 创建时间
         * {@link ConfigItem#getUpdatedAt}
         */
        public ConfigItemProxyFetcher updatedAt() {
            return add(getProxy().updatedAt());
        }

        /**
         * 更新时间
         * {@link ConfigItem#getIsEncrypted}
         */
        public ConfigItemProxyFetcher isEncrypted() {
            return add(getProxy().isEncrypted());
        }


        @Override
        protected ConfigItemProxyFetcher createFetcher(ConfigItemProxy cp, AbstractFetcher<ConfigItemProxy, ConfigItem, ConfigItemProxyFetcher> prev, SQLSelectAsExpression sqlSelectExpression) {
            return new ConfigItemProxyFetcher(cp, this, sqlSelectExpression);
        }
    }


    public static final class Fields {
        public static final String id = "id";
        public static final String key = "key";
        public static final String value = "value";
        public static final String description = "description";
        public static final String environment = "environment";
        public static final String project = "project";
        public static final String version = "version";
        public static final String createdBy = "createdBy";
        public static final String createdAt = "createdAt";
        public static final String updatedAt = "updatedAt";
        public static final String isEncrypted = "isEncrypted";

        private Fields() {
        }
    }
}
